LinuC-1 - 101試験 - 1.03:GNUとUnixのコマンド - 1.03.2 フィルタを使ったテキストストリームの処理

Last Update : August 21 2022 17:47:14

     

a. テキスト処理フィルタ

1.ファイルの内容を表示する[ cat ]

cat コマンドは、ファイルの内容を表示します。複数のファイルを連結して出力することもできます。

$ cat -n file1

file1とfile2を連結して、file3に出力します。

$ cat file1 file2 > file3

● cat コマンド構文
 cat [オプション] [ファイル名...]

● cat コマンドオプション
 -b 先頭行から、空白行を含めずに行番号をつけて表示します
 -n 先頭行から、すべての行に行番号をつけて表示します
 -s 連続した空行を1行の空行にまとめて表示します
 -v タブを「~」に、表示不可能な文字(最上位ビットが1の文字)を「M-」に置き換えて表示します


2.ファイルの内容を逆順に表示する[ tac ]

tac コマンドは、ファイルの内容を行を逆順にして表示します。複数のファイルを連結して逆順に出力することもできます。
行(レコード)はセパレータ文字列によって分離されます (デフォルトは改行文字)。 デフォルトでは、セパレータ文字列は (入力ファイル中で後置されていた) 行の最後に付加されて出力されます。
コマンドの意味どおりcatコマンドと表示が逆になります。コマンドを実行する際には、引数に表示したいファイルを指定して実行します。また、tacはコマンドのつづりもcatの逆になっています。

$ tac file1

file1とfile2を連結して、file3に出力します。

$ tac file1 file2 > file3

● tac コマンド構文
 tac [オプション] [ファイル名...]

● tac コマンドオプション
 -b セパレータ文字列を (入力ファイル中で前置されていた) レコードの先頭に付加します
 -r セパレータ文字列を正規表現として取り扱います
 -s SEPARATOR 改行文字の代わりに、 SEPARATORで指定された文字をレコードのセパレータに用います
 --version 標準出力にバージョン情報を出力して正常終了します


3.ファイルの内容に行番号をつけて表示する[ nl ]

nl コマンドはテキストファイルの一部または全部に行番号を付加して標準出力(画面)に出力します。
nlコマンドはテキストファイルを論理ページとみなします。論理ページはヘッダ (header)、本文 (body)、フッタ (footer) の3つのセクションから構成されます。セクションは空であってもかまいません。それぞれのセクションは以下に示すような特殊な行により分けられます。

  • ヘッダの開始を意味する行・・・ ¥:¥:¥:
  • 本文の開始を意味する行・・・ ¥:¥:
  • フッタの開始を意味する行・・・ ¥:

入力を論理ページ (logical page) に分解します。デフォルトでは、 行番号は各々の論理ページの先頭で 1 にリセットされます。 nl は入力されたファイルすべてをまとめてひとつの文書とみなし処理します。 したがってファイルの切れ目でも行番号や論理ページはリセットされません。


● nl コマンド構文
 nl [オプション] [ファイル名]

● nl コマンドオプション
 -h形式 指定した形式でヘッダに行番号を付加します
 -b形式 指定した形式で本文に行番号を付加します
 -f形式 指定した形式でフッタに行番号を付加します

● nl 形式
 a 全ての行
 t 空白以外の行
 n 行番号を付加しない

● nl コマンドによる行番号の付加
$ cat test.txt ¥:¥:¥: ここはヘッダーです ¥:¥: ここは本文です ¥: ここはフッターです $ nl -ht -bt -ft test.txt 1 ここはヘッダーです 2 ここは本文です 3 ここはフッターです $ nl -ha -ba test.txt 1 ここはヘッダーです 2 3 ここは本文です 4 ここはフッターです


4.バイナリファイルの内容を表示する[ od ]

od コマンドはバイナリファイルの内容を8進数(デフォルト)や16進数などで表示します。


● od コマンド構文
 od [オプション] [ファイル名]

● od コマンドオプション
 -t出力形式 出力するフォーマットを指定する
 -Nバイト数 入力ファイルを指定したバイト数まで表示します

● od 出力形式
 c ASCII文字
 o 8進数
 x 16進数

$ od -N1 -tc /etc/localtime 0000000 T 0000001 $ od -N1 -to /etc/localtime 0000000 00000000124 0000001 $ od -N1 -tx /etc/localtime 0000000 00000054 0000001


5.ファイルの先頭部分を表示する[ head ]

head コマンドはテキストファイルの先頭部分を表示するコマンドです。オプションで行数を指定しない場合は、先頭から10行までを表示します。


● head コマンド構文
 head [オプション] [ファイル名]

● head コマンドオプション
 -c <バイト数> 出力するバイト数を指定します
 -<行数>
-n <行数>
出力する行数を指定します

$ head -5 test.txt ¥:¥:¥: ここはヘッダーです ¥:¥: ここは本文です


6.ファイルの末尾部分を表示する[ tail ]

tail コマンドはテキストファイルの末尾部分を表示するコマンドです。オプションで行数を指定しない場合は、最終行から10行までを表示します。 -fオプションを使うと、ファイルの末尾を表示し続け、ファイルの末尾に行が追加された場合でも、リアルタイムで表示してくれます。


● tail コマンド構文
 tail [オプション] [ファイル名]

● tail コマンドオプション
 -c<バイト数> 出力するバイト数を指定する
 -<行数>
-n<行数>
出力する行数を指定する
 -f リアルタイムで表示する

$ tail -n3 test.txt ¥: ここはフッターです


7.ファイルから指定したフィールドを抽出する[ cut ]

cut コマンドは-cオプションで文字位置を指定した場合、ファイルの各行から指定した文字位置の文字を取り出します。文字位置は一番左の文字を「1」とします。「-」を使用して文字位置の範囲を指定することもできます。

CSVファイルやTSVファイルのように、区切り文字(デリミタ)で区切られたテキストから任意のフィールドを取り出すには、-dオプションで区切り文字を、-fオプションで取り出したいフィールドを指定します。フィールドは一番左のフィールドを「1」とします。
フィールドの指定は「-」を使用して範囲を指定したり、「,」を使用して複数のフィールドを指定したりできます。


● cut コマンド構文
 cut [オプション] [ファイル名]

● cut コマンドオプション
 -c 文字位置 取り出す文字位置を指定する
 -d 区切り文字 フィールドの区切り文字を指定する。指定を省略すると、タブが区切り文字となります。
 -f フィールド 取り出すフィールドを指定する

$ cat test.csv yoshida,tadashi,tokyo,03-1234-5678 yamanaka,yoshiko,osaka,06-1111-3333 $ cut -d , -f 2 test.csv tadashi yoshiko $ cut -d , -f 2-4 test.csv tadashi,tokyo,03-1234-5678 yoshiko,osaka,06-1111-3333


8.二つのファイルを読み、フィールドが共通な行を結合する[ join ]

join コマンドは2つのファイルを読み込み、結合キーとなるフィールドで行を連結して標準出力(画面)に出力します。
ここでいうフィールドとは、1行を行中の(1つ以上の)スペースまたはタブで分割したときの個々の要素のことを指し、一番左のフィールド番号を「1」とします。


● join コマンド構文
 join [オプション] [ファイル名1] [ファイル名2]

● join コマンドオプション
 -j フィールド番号 結合キーとなるフィールド番号を指定する
 -1 フィールド番号 ファイル1の結合キーとなるフィールド番号を指定する
 -2 フィールド番号 ファイル2の結合キーとなるフィールド番号を指定する

$ cat test2a.txt 1 tokugawa 2 oda 3 toyotomi $ cat test2b.txt 1 ieyasu 2 nobunaga 3 hideyoshi $ join -j 1 test2a.txt test2b.txt 1 tokugawa ieyasu 2 oda nobunaga 3 toyotomi hideyoshi

出力フォーマットは、joinフィールド、ファイル1の残りのフィールド、ファイル2の残りのフィールドがスペースで区切られて出力されます。
-1オプションおよび-2オプションを使用して、ファイル1とファイル2で別々のフィールドをキーとして指定することもできます。

$ cat test2a.txt 1 tokugawa 2 oda 3 toyotomi $ cat test2c.txt ieyasu 1 nobunaga 2 hideyoshi 3 $ join -1 1 -2 2 test2a.txt test2c.txt 1 tokugawa ieyasu 2 oda nobunaga 3 toyotomi hideyoshi


9.ファイルを行単位で結合する[ paste ]

paste コマンドは複数のファイルを読み取って、それぞれで行番号が一致する行を水平方向に連結し、標準出力(画面)に出力します。
「-d」オプションで、連結する際の区切り文字を指定できますが、このオプションを省略するとタブで連結されます。


● paste コマンド構文
 paste [オプション] [ファイル名1] [ファイル名2] ・・・

● paste コマンドオプション
 -d 区切り文字 区切り文字(デリミタ)を指定する
 -N バイト数 入力ファイルを指定したバイト数まで表示します

$ paste -d ":" test2a.txt test2b.txt 1 tokugawa:1 ieyasu 2 oda:2 nobunaga 3 toyotomi:3 hideyoshi

区切り文字は1文字です。2文字以上の文字列を指定すると、1文字目が区切り文字として使用され、2文字目以降は無視されます。
区切り文字を指定する際はダブルクォーテーションでくくります(例えばセミコロン「;」など、文字によってはくくらないとエラーとなるため、常にくくっておいたほうが無難です)。



10.入力文字列を変換・削除して出力する[ tr ]

tr コマンドは標準入力から読み取った文字列を変換・削除して標準出力(画面)に出力します。
文字を変換し、オプションで指定すればさらに連続する文字を圧縮 (squeeze) します。
連続する文字を圧縮します。
文字を削除します。
文字を削除してから、連続する文字を圧縮します。


● tr コマンド構文
 tr [オプション] [文字セット1 [文字セット2]]

● tr コマンドオプション
 -d 文字セット1でマッチした文字を削除する
 -s 文字セット1でマッチした文字が連続する場合1文字にする

● trで使えるクラス
 [:alpha:] 英文字
 [:lower:]
英小文字
 [:upper:] 英大文字
 [:digit:] 数字
 [:alnum:] 英数字
 [:space:] スペース

下記の例では-dオプションを使用して文字「m」または「a」を削除しています(文字列「ma」を削除するという意味ではない点に注意してください)。

$ tr -d "ma" My name is kawamoto  <--- この文字列を入力してEnterを押すと My ne is kwoto   <--- この文字列を表示する    <--- Ctrl + c で終了 $

ホームディレクトリのtest.txtの英小文字を全て英大文字に変えたものをtest2.txtに出力するには、

$ cat /home/sakura/test.txt | tr 'a-z' 'A-Z' > /home/sakura/test2.txt または、 $ cat /home/sakura/test.txt | tr [:lower:] [:upper:] > /home/sakura/test2.txt

注意すべき点は、tr コマンドは他の多くのテキスト処理コマンドと異なり、ファイル名を引数にとらないということです。
ファイルの内容を変換・削除して標準出力(画面)に出力したい場合は、パイプ「|」を使います。下記の例ではcatコマンドでtest.txtの内容を出力しますが、その出力をパイプによってtrコマンドの入力として渡しています。

$ cat test1.txt aaacccccbbbb
$ cat test1.txt | tr -s "abc" acb $


11.行単位でファイルの内容をソートして表示する[ sort ]

sort コマンドは行単位でファイルの内容をソートし、標準出力(画面)に出力します。
ソートをするからには、各行のどの部分を基準にソートするか(例えば各行の先頭1文字を基準にソートするなど)を指定しなければなりません。
sortコマンドにおけるソート基準文字列の開始位置や終了位置の指定は、フィールドとフィールド内での文字位置の両方を指定します。
まずフィールドですが、これはTSV(タブ区切り)やCSV(カンマ区切り)などをそれぞれのセパレータ(タブやカンマ)で分割したときの各要素のことです。普通のテキストの場合はフィールド数が一つとみなすことができます。フィールドの指定は一番左のフィールドを「0」(その次を「1」、「2」…)とします。
次にフィールド内での文字位置の指定ですが、これはフィールドの一番左の文字を「0」(その次を「1」、「2」…)とします。
そしてこの2つの数値を「.」(ピリオド)で連結して指定します。


● sort コマンド構文
 sort [オプション] [ファイル名・・・]

● sort コマンドオプション
 +開始[ -終了] ソート基準文字列フィールドの番号を指定する。開始フィールドから終了フィールドの直前のフィールドの最後の文字までをソート対象とする。終了フィールドは含まない。位置はf.cの形をとり、fがフィールドの番号をcはそのフィールド内での文字位置を表す。フィールドと文字位置はそれぞれ 0 から数えはじめる。
 -t [文字] フィールド区切り文字(セパレータ)を指定する。デフォルトはスペース
 -b 行頭の空白を無視する
 -f 大文字と小文字を区別しない
 -r 降順にソートする
 -n 数字を文字ではなく数値として処理する
 -k 開始[,終了] 各行でソート対象となるキーの場所を指定する。開始から終了までをソートフィールドとする。開始だけを書いた場合は、開始から最後までをソートフィールドとします。位置はf.cの形をとり、fがフィールドの番号をcはそのフィールド内での文字位置を表す。ただし、フィールドと文字位置はそれぞれ 1 から数えはじめる。cを省略した場合はフィールドの先頭からとする。
 -u 同一キーであるフィールドが複数行存在する場合、1行だけ出力する
 -M 先頭に現れた3文字を月表記とみなしてソートする。ただし、先頭にある空白は無視する

text-fileを大文字小文字関係なくソートする場合

$ sort -f text-file

CSV ファイルのように列の区切り文字が空白でないときは 次のように "-t" オプションで区切り文字を指定できます。

$ sort -k 2,2 -n -r -t "," text-file

デフォルトでは昇順にソートされます。
終了位置を指定しないと文末までがソート基準文字列となります。
終了位置を指定した場合、終了位置の文字の直前までがソート基準文字列となります。
フィールドだけを指定し、フィールド内での文字位置の指定を省略すると、そのフィールドの先頭の文字が指定されたことになります。



12.入力ファイルの内容を分割し、複数のファイルを生成する[ split ]

split コマンドは、オプションで指定された行ごとに入力ファイルを分割し、結果を複数のファイルに書き込みます(その際、入力ファイルは変更されません)。
デフォルトでは、 split コマンドは FILE のうちの 1000 行ずつ (1000 行に満たない場合は残り全部) を各出力ファイルに書き込みます。
出力されるファイル名はコマンドラインで指定したプレフィックスの末尾に、「aa」、「ab」、「ac」 … を付加したものとなります。
プレフィックスを指定しない場合のデフォルト値は「x」です。よって生成されるファイル名は「xaa」、「xab」、「xac」 … となります。


● split コマンド構文
 split [オプション] [入力ファイル名 [プレフィックス]]

● split コマンドオプション
 -行数 ファイルを何行ごとに分割するかを指定する
 -b バイト数[単位] 指定したバイト数で分割し、出力する。数字の後に記号を付加することにより単位を変えることができる。kはKバイトmはMバイト
 -a 文字数 分割したファイル名に付与する文字数を指定します。 -1 であれば 「a」 -2 であれば 「aa」 がファイル名に付与されます。

ファイルText01.txtを5行ずつ分割し、それぞれをファイルfile1.aa , file1.ab ・・・に出力します。

$ split -5 -a 2 Text01.txt file1. $ ls Text01.txt file1.aa fole1.ab file1.ac


13.ファイルから重複行を取り除きます[ uniq ]

uniq コマンドはテキストファイルの重複している行を1行にまとめて標準出力(画面)に出力します。
このコマンドは他の多くのテキスト処理コマンドと異なり、引数に出力ファイル名を指定することができます(他の多くのテキスト処理コマンドの場合、結果をファイルに保存するにはリダイレクトを使います)。
このコマンドを使用する際は、テキストファイルを事前にソートしておく必要があります。重複行が隣り合っていないとうまく機能しないのです。


● uniq コマンド構文
 uniq [オプション] [入力ファイル名 [出力ファイル名]]

● uniq コマンドオプション
 -d 重複している行のみ出力する
 -u 重複していない行のみ出力する
 -c 重複している行を出力すると同時にそれぞれの重複回数も表示する

$ cat sample.txt abcde abcde abcde abcdef abcdefg abcdefg $ uniq sample.txt abcde abcdef abcdefg $ uniq -c sample.txt 3 abcde 1 abcdef 2 abcdefg


14.印刷のためにファイルを整形します[ pr ]

pr コマンドは印刷のためにファイルを整形し、標準出力(画面)に出力します。
ファイル名に「-」を指定すると標準入力から読み取ります。
デフォルトでは、それぞれのページに5行のヘッダがつきます。ヘッダは2行の空行、日付・ファイル名・ページ番号の行、2行の空行から構成されます。各ページの末尾には全て空行の5行のフッタも出力されます。


● pr コマンド構文
 pr [オプション] [ファイル名]

● pr コマンドオプション
 +開始[:終了] 開始ページや終了ページを指定する
 -hヘッダ文字列 ヘッダに表示する文字列を指定する
 -l行数 1ページあたりの行数を指定する
 -W文字数 1行あたりの文字数を指定する

・「-l」オプションを指定しない場合のデフォルトの行数は66行です。
・「-W」オプションを指定しない場合のデフォルトの文字数は72文字です。
・「-l」オプションで指定する行数はヘッダ行とフッタ行を含めた行数です。

1ページ20行で出力します。

$ pr -l20 sample.txt 2013-04-14 15:20 sample.txt Page 1 abcde abcdefg abcdef abcde abcdefg abcde


15.ファイルを指定した桁に整形します[ fmt ]

fmt コマンドはテキストファイルを-wオプションで指定した幅(デフォルトは75桁)に整形し、標準出力(画面)に出力します。
例えば「-w 1」と指定した場合、1行の幅を1桁としますが、単語は分割されません。


● fmt コマンド構文
 fmt [オプション] [ファイル名]

● fmt コマンドオプション
 -w 行幅 1行の幅を指定する
 -s 行の分割のみ行い、結合はしない

各行に入力されているテキストの幅と比較して、オプションで指定した幅が広い場合には、行の結合が行われます。

$ fmt -w30 sample.txt abcde abcdefg abcdef abcde abcdefg abcde


16.タブをスペースに変換します[ expand ]

expand コマンドはテキストファイルの中にあるタブをスペースに変換し、標準出力(画面)に出力します。デフォルトでは「1タブ=8スペース」として変換されるため、見ただけでは違いがわかりません。-tオプションでタブ幅を指定すると違いがわかります。
このコマンドは元ファイルを変更しません。スペースをタブに変換した結果を別のファイルとして保存したい場合は、リダイレクトを使用します。


● expand コマンド構文
 expand [オプション] [ファイル名]

● expand コマンドオプション
 -i 行頭のタブのみを変換する
 -t <タブ幅> タブ幅(1つのタブがスペース何個に相当するか)を指定する

$ cat sample2.txt
a b c d e f g h
$ expand -t 3 sample2.txt
a b c d e f g h
$ expand -t 10 sample2.txt
a b c d e f g h


17.スペースをタブに変換します[ unexpand ]

unexpand コマンドはテキストファイルの中にあるスペースをタブに変換し、標準出力(画面)に出力します。デフォルトでは行頭のスペース8個がタブ1個に変換されます。
このコマンドは元ファイルを変更しないという点です。スペースをタブに変換した結果を別のファイルとして保存したい場合は、リダイレクトを使用します。


● unexpand コマンド構文
 unexpand [オプション] [ファイル名]

● unexpand コマンドオプション
 -a 行頭以外のスペースも変換する
 -t <タブ幅> タブ幅(1つのタブがスペース何個に相当するか)を指定する


$ cat sample3.txt
a b c d e f g h
$ unexpand sample3.txt
a b c d e f g h


18.ファイルの行数、単語数、文字数を表示します[ wc ]

wc コマンドはテキストファイルの行数、単語数、文字数をこの順番で標準出力(画面)に出力します。
文字数(バイト数)には、改行コードやEOFも含まれます。


● wc コマンド構文
 wc [オプション] [ファイル名]

● wc コマンドオプション
 -l 行数のみを表示する
 -w 単語数のみを表示する
 -c 文字数(バイト数)のみを表示する
 --bytes バイト数のみを表示する
 --chars 文字数のみを表示する

sample.txtの行数、単語数、バイト数をそれぞれ表示する場合

$ wc sample.txt 6 6 41 sample.txt


19.テキストやメッセージを1画面ずつ表示します[ less ]

less コマンドはテキストファイルやメッセージを1画面ずつ表示します。


● less コマンド構文
 less [オプション] [ファイル名]
または
 コマンド | less [オプション]


● less コマンドオプション
 +行数、-行数 指定した行数から表示する
 +/文字数 指定文字列を検索し、見つけた行から表示する(正規表現によるパターン指定が可能)
 -p文字列
 --pattern=文字列
指定文字列を検索し、見つけた行から表示する(正規表現によるパターン指定が可能)
 -oファイル
 --log-file=ファイル
パイプ(|)などで標準入力から入力した内容を表示する際、指定したファイルにコピーを保存する。既存ファイルを指定した場合は、上書きするか、追加するかを確認するメッセージが表示される
 -Oファイル
 --LOG-FILE=ファイル
「-o」と同じだが、既存ファイルを指定した場合は、確認せずに上書きする
 -kファイル名
 --lesskey-file=ファイル名
lesskeyファイル(キー定義ファイル、「lesskey」コマンドで生成)を指定する
 -L
 --no-lessopen
環境変数LESSOPEN(lessコマンド用のオプションを定義した環境変数)を無視する


● less スクロール・表示方法のオプション
 -S
 --chop-long-lines
画面幅より長いテキスト行を折り返さない。
 -#
 --shift
水平方向にスクロールする際の、デフォルトの移動する行数が半分になる。
 -s
 --squeeze-blank-lines
連続した空行を1行にする
 -q
 --quiet
 --silent
ファイルの末尾まで表示したときのビープ音を鳴らさないようにする。
 -e
 --quit-at-eof
ファイルの末尾に2回、達すると表示、閲覧を終了する。
 -数
 -z数
 --window=数
スクロールするウィンドウの大きさを指定する(1画面より小さくする際は負の数で行数を指定。例えば、ウィンドウが24行で「-z-4」とした場合は、20行でスクロールする)
 -E
 --QUIT-AT-EOF
ファイルの末尾に到達したら表示を終了する
 -Q
 --QUIET
 --SILENT
「-q」のときも含め、ビープ音を一切鳴らさない
 -x数,…
 --tabs=数,…
タブストップの位置を設定する。「-x4」の場合4の倍数、「-x9,17」は「9,17,25,33…」となる(デフォルトは8)
 -F
 --quit-if-one-screen
1画面で表示できる場合はすぐに終了する
 -K
 --quit-on-intr
[Ctrl]+[C]キーで終了する
 -n
 --line-numbers
行番号を表示しない
 -N
 --LINE-NUMBERS
行番号を表示する
 -J
 --status-column
画面の左にステータス行を表示する(例えば、検索時に該当する行に「*」記号が表示される)
 -m
 --long-prompt
moreコマンド同様、プロンプトに現在の表示位置をパーセントで表示する
 -M
 --LONG-PROMPT
「-m」より詳細なプロンプトを表示する
 -f
 --force
通常のファイル以外も強制的に表示する
 -r
 --raw-control-chars
制御文字をそのまま表示する(デフォルトでは「^A」のようにキャレット記号を使って表示する)
 -R
 --RAW-CONTROL-CHARS
「-r」と同様だが、可能な限り画面表示を正しく維持する
 -XXX
 --mark-wrong-char
表示できない誤った文字を表示する際にマーク文字(〓)を使用する(デフォルトではバイナリとして表示)
 -u
 --underline-special
バックスペースとキャリッジリターンを印刷可能文字として扱う
 -U
 --UNDERLINE-SPECIAL
バックスペース、タブ、キャリッジリターンを制御文字として扱う(「-u」「-U」ともに指定していない場合は、これらの文字を使って重ね打ちによる太字や下線を表示する)
 ~
 --tilde
ファイル末尾以降のチルダ記号(~)を表示しない


● less 検索関係オプション
 -i
 --ignore-case
検索時に大小文字を区別しない(ただし、検索文字列に大文字を使用した場合は大小文字を区別する)
 -I
 --IGNORE-CASE
検索時、常に大小文字を区別しない
 -a
 --search-skip-screen
画面に表示されている次の行以降を検索する(デフォルトは画面内の2行目以降、または最後の検索対象が見つかった行以降を検索する)
 -g
 --hilite-search
検索時、最初に見つけた分だけをハイライト表示する(デフォルトでは見つけた箇所を全てハイライト表示)
 -G
 --HILITE-SEARCH
検索時のハイライト表示をしない
 -w
 --hilite-unread
画面単位でスクロールした際、新しく表示された行の先頭部分をハイライト表示する
 -W
 --HILITE-UNREAD
新しく表示された行の先頭部分を常にハイライト表示する
 -tタグ
 --tag=タグ
タグを定義する(タグはソースコードで定義箇所にジャンプしたりする際に使用する)
 -Tタグファイル
 --tag-file=タグファイル
タグのリストが書かれたファイルを指定する(タグファイルは「ctags」コマンドで生成)


● lessで表示中のキー操作
 h
 H
ヘルプを表示(less画面と同様、[Enter]キーで1行、スペースキーで1画面先に進み[q]で終了する)
 F 1画面進み、末尾まで表示しても終了せずにファイルを監視する(「tail -f」同様、データが追加され続けるログファイルなどに使用する)
 q
 :q
 Q
 :Q
 ZZ
終了する
 v 表示中のファイルを「vi」コマンドで編集する(使用するエディタは、環境変数VISUALまたはEDITORで変更可能)
 e
 ^E
 j
 ^N
 return
1行進む(コマンドに続いて数字を入力すると指定行数分進む)
 y
 k
 ^K
 ^P
1行戻る(コマンドに続いて数字を入力すると指定行数分進む)
 f
 ^F
 ^V
 space
 esc + space
1画面進む([esc] + [space]の場合データの末尾で止まらない)
 b
 ^B
 esc + v
1画面戻る
 d
 ^D
半画面分進む
 u
 ^U
半画面分戻る
 esc + )
 右矢印
半画面分右を表示する
 esc + (
 左矢印
半画面分左を表示する
 g
 <
 esc + <
先頭行に移動する(コマンドに続いて数字を指定すると指定した行へ移動する)
 G
 >
 esc + >
最終行に移動する(コマンドに続いて数字を指定すると指定した行へ移動する)
 !コマンド シェルでコマンドを実行する(シェルは環境変数SHELLで変更可能)

^E は[Ctrl]キーを押してから[E]キーを押す。


● lessで表示中のキー操作(検索関係)
 /検索文字列 検索する(「/」続いて検索パターンを入力する)
 ?検索文字列 後ろ方向に検索する(「?」に続いて検索パターンを入力する)
 n 次を検索する(「n」に続いて数字を入力すると指定回数分先に進む)
 N 逆順に次を検索する(「N」に続いて数字を入力すると指定回数分先に進む)
 esc + u 検索結果の反転/反転解除を切り替える
 &検索文字列 検索パターンにあっている行だけを表示する(「&」に続いて検索パターンを入力する)

httpdの設定ファイルを1ページずつ表示する。

$ less /etc/httpd/conf/httpd.conf
#
# This is the main Apache HTTP server configuration file.  It contai
# configuration directives that give the server its instructions.
# See  for detailed information.
# In particular, see 
# 
# for a discussion of each configuration directive.
#
# See the httpd.conf(5) man page for more information on this config
# and httpd.service(8) on using and configuring the httpd service.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders. If you are
# consult the online docs. You have been warned.  
#
# Configuration and logfile names: If the filenames you specify for
# of the server's control files begin with "/" (or "drive:/" for Win
# server will use that explicit path.  If the filenames do *not* beg
# with "/", the value of ServerRoot is prepended -- so 'log/access_l
# with ServerRoot set to '/www' will be interpreted by the
# server as '/www/log/access_log', where as '/log/access_log' will be
# interpreted as '/log/access_log'.

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.


4. sed コマンド

sed コマンドは、ファイルを読み込み、指定されたスクリプトに従って文字列の置換、行の削除をします。
結果は標準出力(ディスプレイ)に表示されます。もし、ファイルに保存したい場合は出力のリダイレクトを利用します。


● sed コマンド構文
  sed [オプション] [スクリプト] ファイル名

● sed コマンドオプション
 -e 条件式指定した条件式で変換処理を行う
 -f ファイル名指定したファイルに記述されているコマンドや条件式に従って処理を行う

● sed スクリプト
 行数 処理する行数を指定する
 行数,行数 指定した行数間の文字列を処理する。$を指定すると最後の行を表せる
 /文字列/ 指定した文字列が現れる行を処理する。先頭に「^」を付けると指定した文字列から始まる行、末尾に「$」を付けると指定した文字列で終わる行が対象になる。行数の範囲指定でも利用できる
 d 指定された行を出力しません。
 s/検索パターン/置換パターン/[g] 検索パターンにマッチする文字列を置換パターンに変換します。
検索パターンにマッチする部分が1行の中に複数個所あっても最初の1ヶ所しか置換しません。マッチするすべての部分を置換するには g を末尾に記述してください。g の代わりに数字を末尾に記述すると数字番目のものを置換します。
 y/検索文字列/置換文字列/ 1文字ずつ検索して置換します。、検索文字列の中の文字とマッチする文字が見つかった場合、検索文字列の検索文字の位置と同じ位置の置換文字列の文字と置き換えます。

# cat test1.txt
acaba
acdtj
abcfp
bcaca
vhsir
babca
# sed '2,4d' test1.txt  <--- 2~4行目を削除します
acaba
vhsir
babca
# sed s/ca/wz/ test1.txt  <--- 文字列caを文字列wzに置換する
awzba
acdtj
abcfp
bwzca  <--- 文字列caが残っている
vhsir
babwz
# sed s/ca/wz/g test1.txt  <--- 文字列caすべてを文字列wzに置換する
awzba
acdtj
abcfp
bwzwz
vhsir
babwz
# sed y/abc/123/ test1.txt  <--- 文字 a は 1, b は 2 , c は 3 に置換する
13121
13dtj
123fp
23131
vhsir
21231

z. 出題範囲概要

概要 :
  • テキストストリームにフィルタを適用できる。

詳細 :

  [ 例題 ] 


         

    www.it-shikaku.jp